/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Controller;

import Model.Caja;
import Model.Congreso;
import Model.Reposicion;
import Model.Moneda;
//import Servicio.Facade;
import Servicio.Proxy;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.Calendar;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

/**
 *
 * @author Ernesto
 */
public class ABMCongresoController {

    private ArrayList<String> mLocalidades;
    private ArrayList<String> mProvincias;
    private ArrayList<String> mPaises;
    private ArrayList<Congreso> mCongresos;
    private ArrayList<String> mMonedas;
    
    public ABMCongresoController(){
    
    }
    
    
    
    public boolean ingresarCongreso(Congreso con) {

        return Proxy.almacenarCongreso(con);

    }
    
    public void modificarCongreso(Congreso con)
    {
       Proxy.modificarCongreso(con);
        
    }
    
    public ArrayList<String> getMonedas() {
        return mMonedas;
    }
    
    public void setMonedas(ArrayList<String> val) {
        this.mMonedas = val;
    }
    
    public ArrayList<String> getLocalidades () {
        return mLocalidades;
    }
 
    public void setLocalidades (ArrayList<String> val) {
        this.mLocalidades = val;
    }
    
    public ArrayList<String> getProvincias () {
        return mProvincias;
    }
 
    public void setProvincias (ArrayList<String> val) {
        this.mProvincias = val;
    }
    
    public ArrayList<String> getPaises () {
        return mPaises;
    }
 
    public void setPaises (ArrayList<String> val) {
        this.mPaises = val;
    }
    
    public void cargarMonedas(){
         this.setMonedas(Proxy.obtenerConjuntoExpandible(11));
        //this.mMonedas.remove(this.mMonedas.size()-1);
        
    }
    
     public  void cargarLocalidades(){
        this.setLocalidades(Proxy.obtenerConjuntoExpandible(5));
        //this.mLocalidades.remove(this.mLocalidades.size()-1);
        
    }
    
    public  void cargarProvincias(){
        this.setProvincias(Proxy.obtenerConjuntoExpandible(6));
        //this.mProvincias.remove(this.mProvincias.size()-1);
        
    }
    
    public  void cargarPaises(){
        this.setPaises(Proxy.obtenerConjuntoExpandible(7));
        //this.mPaises.remove(this.mPaises.size()-1);
        
    }
    
    public ArrayList<Congreso> getCongresos () {
        return mCongresos;
    }
    
   public void setCongresos (ArrayList<Congreso> val) {
        this.mCongresos = val;
    }
   
   public  void cargarCongresos(){
        this.setCongresos(Proxy.obtenerCongresos());
        
    }
   public Congreso getOficina(){
       cargarCongresos();
       Congreso mCongreso = new Congreso();
       mCongreso = mCongresos.get(mCongresos.size()-1);
       return mCongreso;
   }

    
    public boolean esCantidadDVD (String saldo)
    {
        try{
            int aux= Integer.parseInt(saldo);
            if (aux>200) {
                JOptionPane.showMessageDialog(new JFrame(), "Debe ingresar una cantidad de DVD menor a 200 ", "Atención!", JOptionPane.WARNING_MESSAGE);
                return false;}
        }catch (Exception e) 
        {
            JOptionPane.showMessageDialog(new JFrame(), "Debe ingresar una cantidad de DVD válida ", "Atención!", JOptionPane.WARNING_MESSAGE);
            return false;
        }
        return true;
    }
    public boolean esPrecio (String precio)
    {
        try{
            Integer.parseInt(precio);
        }catch (Exception e) 
        {
            JOptionPane.showMessageDialog(new JFrame(), "Debe ingresar un precio válido ", "Atención!", JOptionPane.WARNING_MESSAGE);
            return false;
        }
        return true;
    }
    
    public boolean esSaldo (String saldo)
    {
        try{
            
            Integer.parseInt(saldo);
        }catch (Exception e) 
        {
            JOptionPane.showMessageDialog(new JFrame(), "Debe ingresar un saldo válido ", "Atención!", JOptionPane.WARNING_MESSAGE);
            return false;
        }
        return true;
    }
    
   
    public boolean validarFechas(String fecha1,String fecha2)
    {
        
        boolean error=false;
        

        Calendar fechaI = Calendar.getInstance();
        Calendar fechaF = Calendar.getInstance();
        
        int diaI = Integer.parseInt(fecha1.substring(8,10));
        int mesI = Integer.parseInt(fecha1.substring(5,7));
        int anioI = Integer.parseInt(fecha1.substring(0,4));
        
        
        int diaF = Integer.parseInt(fecha2.substring(8,10));
        int mesF = Integer.parseInt(fecha2.substring(5,7));
        int anioF = Integer.parseInt(fecha2.substring(0,4));
   
        
        fechaI.set(anioI, mesI, diaI);
        fechaF.set(anioF, mesF, diaF);
        
        if (fechaI.compareTo(fechaF) <= 0 )
               error=true;
        else 
            JOptionPane.showMessageDialog(new JFrame(), "La fecha de inicio no puede ser mayor a la de fin","Atención!", JOptionPane.WARNING_MESSAGE); 
          
           
        return error;
    }
    
    public boolean validarPais(String pais){
        boolean esverdad=false;
        try{
        if (pais.compareTo("")==0){
            esverdad=false;
            JOptionPane.showMessageDialog(new JFrame(), "Seleccione un país ", "Atención!", JOptionPane.WARNING_MESSAGE);
        }
       else 
            esverdad=true;
        }
        catch(Exception e){
                       
        }
        return esverdad;
    }
     public boolean validarLocalidad(String localidad){
        boolean esverdad=false;
        try {
        if (localidad.compareTo("")==0){
            esverdad=false;
            JOptionPane.showMessageDialog(new JFrame(), "Seleccione una Ciudad", "Atención!", JOptionPane.WARNING_MESSAGE);
        }
        else 
            esverdad=true;
        }
        catch(Exception e){
                       
        }
        
        return esverdad;
    }
     public boolean validarProvincia(String provincia){
        boolean esverdad=false;
        try{
        if (provincia.compareTo("")==0){
            esverdad=false;
            JOptionPane.showMessageDialog(new JFrame(), "Seleccione una Provincia ", "Atención!", JOptionPane.WARNING_MESSAGE);
        }
       else 
            esverdad=true;
        }
        catch(Exception e){
                       
        }
        return esverdad;
    }
     public boolean esNombre(String provincia){
        boolean esverdad=false;
       try{
        if (provincia.compareTo("")==0){
            esverdad=false;
            JOptionPane.showMessageDialog(new JFrame(), "Ingrese un nombre de congreso ", "Atención!", JOptionPane.WARNING_MESSAGE);
         }
       else 
            esverdad=true;
        }
        catch(Exception e){
                       
        }
        return esverdad;
    } 
      public boolean esInicial(String provincia){
        boolean esverdad=false;
       try{
        if (provincia.compareTo("")==0){
            esverdad=false;
            JOptionPane.showMessageDialog(new JFrame(), "Ingrese las iniciales del congreso ", "Atención!", JOptionPane.WARNING_MESSAGE);
        }
         
       else 
            esverdad=true;
        }
        catch(Exception e){
                       
        }
        return esverdad;
    }
    
    public Caja actualizarItemsCajas( Congreso con){
       
       return Proxy.obtenerCaja(con);
           
}
    
      /** Almacena una reposicion de stock*/
    public static boolean almacenarReposicion(Reposicion rep) {
             return Proxy.almacenarReposicion(rep);
    }
    //Esta funcion Carga los combos cuando apenas entras a una ventana nueva que lo necesita
    public void cargadatosCombo(javax.swing.JComboBox combo, ArrayList<String> listaDato){
                combo.removeAllItems();
                combo.addItem("");
                for (int i = 0; i <  listaDato.size(); i++) {
                    combo.addItem( listaDato.get(i));
                }
                }
    
    //Esta Funcion Carga los combos a medida que uno va poniendo letras
    public void cargaCombos(final javax.swing.JComboBox combo, final ArrayList<String> listaDato){
        combo.getEditor().getEditorComponent().addKeyListener(new KeyAdapter() { public void keyReleased(KeyEvent e) {
            if (e.getKeyCode() != 38 && e.getKeyCode() != 40 && e.getKeyCode() != 10) {
                String aC = combo.getEditor().getItem().toString();
                String a = aC.toLowerCase();
                String aux;
                combo.removeAllItems();
                int st = 0;
                for (int i = 0; i <  listaDato.size(); i++) {
                    aux=listaDato.get(i).toLowerCase();
                    if (aux.startsWith(a)) { combo.addItem( listaDato.get(i)); st++; }
                }
                combo.getEditor().setItem(new String(aC));
                combo.hidePopup();
                if (st != 0) { combo.showPopup(); }
            }
        } } );}
}
